package com.atguigu.service.impl;

import com.atguigu.dao.AccountDao;
import com.atguigu.pojo.Account;
import com.atguigu.service.AccountService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
/**
 *  声明式的事务处理：
 *   事务相关的所有代码，全部横向抽取，通过AOP思想，植入到当前的业务逻辑中
 *   实现：不侵害原有的业务逻辑功能，添加了事务处理
 *
 */
@Service
public class AccountServiceImpl implements AccountService {
    @Autowired
    private AccountDao accountDao;

    /**
     * 实现转账逻辑
     * 传递付款人，收款人，金额
     * 查询收款人和付款人的信息
     * 设置收款的人的余额和付款人的余额
     * 再更新数据
     */
    @Override
    public void transfer(String toName, String inName, double money) {
        //查询收款人和付款人的信息
        Account toAccount = accountDao.queryAccountByName(toName);
        Account inAccount = accountDao.queryAccountByName(inName);
        //设置收款的人的余额和付款人的余额
        toAccount.setMoney(toAccount.getMoney()-money);
        inAccount.setMoney(inAccount.getMoney()+money);
        //再更新数据
        int i = accountDao.updateAccount(toAccount);
        //int c = 1/0;
        int j = accountDao.updateAccount(inAccount);
        if (i>0 && j>0){
            System.out.println("转账成功！");
        }
    }
}
